<?php if (!defined("_ECRIRE_INC_VERSION")) return;

function formulaires_traductions_update_db_traiter_dist(){
    $result = array();
    
    $rows = create_rows();
    
    if ($rows && insert_update_traductions($rows, $log))
        $result['message_ok'] = _T('traduction:update_db_ok');
    else
        $result['message_erreur'] = _T('traduction:update_db_error');
        
    set_request('traductions_log', $log);
    
    return $result;
}

/**
 * ФОРМИРОВАНИЕ МАССИВА ПЕРЕВОДОВ 
 */
function create_rows() {
    $rows = array();
	// Пройдем по выбранным языкам
	$langs = explode(',',lire_config('langues_multilingue'));
    if ($langs)  	
	foreach ($langs as $lang) {		
		// Проверяем есть ли для текущего языка языковой файл
		if (find_in_path('lang/local_'.$lang.'.php')) {
			$contents = file_get_contents(find_in_path("lang/local_$lang.php"));
			$lines = explode("\n", $contents);
			// Парсим каждую строку в поисках ключа=>значения
			foreach ($lines as $line) {	
				$pattern = '/[\'"](.*)[\'"].*=>.*[\'"](.*)[\'"]/';
				if (preg_match($pattern, $line, $matches)) {					
					$trad_exists = false; // Признак того, что строка для данного перевода уже существует в формируемом массиве
					if ($rows) {
						// Проверяем нет ли уже в массиве этого перевода, и если есть, дополняем текущим языком						
						foreach ($rows as $key=>$row)
							if ($row['item_traduction'] == $matches[1]) {
								$trad_exists = true;
								$rows[$key][$lang] = $matches[2];
							}
					} 
					// Если перевода еще нет, то просто создаем его
					if (!$trad_exists)
						$rows[] = array('item_traduction'=>$matches[1], "$lang"=>$matches[2]);
				}
			}
		}
	}
    return $rows;
}

/**
 *  INSERT/UPDATE в БД
 */
function insert_update_traductions($rows = array(), &$log){
    $secteur_traduction = false;
	$updated_num = 0;
	$inserted_num = 0;
	$ok = true;	
	foreach ($rows as $row) {		
		// Если такой перевод уже есть в БД, то обновляем его
		if (sql_countsel('spip_traductions', "item_traduction='".mysql_real_escape_string($row['item_traduction'])."'")>0) {
			if (sql_updateq('spip_traductions', $row, "item_traduction='".mysql_real_escape_string($row['item_traduction'])."'"))
				$updated_num++;
			else 
				$ok = false;
		} else { // Иначе инсертим
			// Если сектор еще не создан, создаем его
			if (!$secteur_traduction)
				$secteur_traduction = sql_insertq('spip_traductions_secteurs', 
                    array('item_secteurs_traduction'=>_T('traduction:traductions_from_files', array('date'=>date('d.m.Y H:i:s')))));
			if ($secteur_traduction) {
				$row['secteur_traduction'] =  $secteur_traduction;
				if (sql_insertq('spip_traductions', $row))	
					$inserted_num++;
				else 
					$ok = false;	
			} else $ok = false;
		}	
	}
    $log = _T('traduction:updated_elements_num', array('num'=>$updated_num)).'<br />';
    $log .= _T('traduction:inserted_elements_num', array('num'=>$inserted_num)).'<br />';
    return $ok;
}